package com.cdut.service;

import com.cdut.pojo.Good;
import com.cdut.pojo.User;
import com.cdut.util.JsonResponce;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

public interface GoodService {

    /**
     * 添加商品
     * @param good 商品
     * @return json
     */
    JsonResponce<Integer> addGood(Good good, MultipartFile multipartFile) throws IOException;

    /**
     * 删除商品
     * @return json
     */
    JsonResponce<Integer> deleteGood(int gid);

    /**
     * 更新商品信息
     * @param good 商品
     * @return json
     */
    JsonResponce<Integer> upDateGood(Good good);

    /**
     * 通过商品名查询
     * @param name 商品名
     * @return 查询到的商品
     */
    JsonResponce<List<Good>> queryGoodByName(@Param("gname") String name);

    /**
     * 查询全部的商品
     * @return 商品总列表
     */
    JsonResponce<List<Good>> queryGoodList();

    /**
     * 通过商品id查询
     * @param gid 商品id
     * @return 商品
     */
    JsonResponce<Good> queryGoodById(int gid);

    /**
     * 通过分类查询
     * @param tag 分类
     * @return 商品单
     */
    JsonResponce<List<Good>> queryGoodByTag(@Param("tag") String tag);


    /**
     * 通过标签和商品名查询
     * @param gname 商品名
     * @param tag 标签
     * @return good list
     */
    JsonResponce<List<Good>> queryGood(String gname,String tag);

    /**
     * 通过标签和商品名实现分页的查询
     * @param gname 商品名
     * @param tag 标签
     * @param pageNum 页码
     * @return list
     */
    List<Good> queryGoodPages(String gname,String tag,int pageNum,int pageSize);

    /**
     * 分页查询全部的商品
     * @param pageNum 页码
     * @param pageSize 页面大小
     * @return list
     */
    List<Good> queryGoodListPage(int pageNum, int pageSize);

    /**
     * 标签分页查询
     * @param tag 标签
     * @param pageNum 页码
     * @param pageSize 页面大小
     * @return list
     */
    List<Good> queryGoodTagPage(String tag,int pageNum, int pageSize);

    /**
     * 查询用户的商品
     * @param uid 用户id
     * @return list
     */
    List<Good> queryGoodByUid(int uid);
}
